﻿namespace DoNet.TenPay
{
    /// <summary>
    /// 统一支付基类
    /// </summary>
    public class ResponseUnifiedOrderBase : ResponseReturnSuccess
    {
        #region 以下字段在return_code为SUCCESS的时候有返回	

        #region 以下字段在return_code 和result_code都为SUCCESS的时候有返回
        /// <summary>
        /// 交易类型
        /// "支付类型为   JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付  MICROPAY 扫码支付"
        /// </summary>
        public string trade_type { set; get; }

        #endregion 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #endregion 以下字段在return_code为SUCCESS的时候有返回	
    }
    /// <summary>
    /// MWEB H5支付
    /// </summary>
    public class ResponseUnifiedOrderH5Result : ResponseUnifiedOrderBase
    {

        #region 以下字段在return_code为SUCCESS的时候有返回	

        #region 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #region 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段
        /// <summary>
        /// 预支付交易会话标识
        /// 微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时
        /// 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段
        /// </summary>
        public string prepay_id { set; get; }
        #endregion 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段

        #region 支付类型为 MWEB H5支付 返回该字段
        /// <summary>
        /// 支付跳转链接
        /// mweb_url为拉起微信支付收银台的中间页面，可通过访问该url来拉起微信客户端，完成支付,mweb_url的有效期为5分钟。
        /// 支付类型为 MWEB H5支付 返回该字段
        /// </summary>
        public string mweb_url { set; get; }
        #endregion 支付类型为 MWEB H5支付 返回该字段

        #endregion 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #endregion 以下字段在return_code为SUCCESS的时候有返回	
    }
    /// <summary>
    /// JSAPI 公众号支付
    /// </summary>
    public class ResponseUnifiedOrderJsApiResult : ResponseUnifiedOrderBase
    {
        #region 以下字段在return_code为SUCCESS的时候有返回	

        #region 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #region 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段
        /// <summary>
        /// 预支付交易会话标识
        /// 微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时
        /// 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段
        /// </summary>
        public string prepay_id { set; get; }
        #endregion 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段

        #endregion 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #endregion 以下字段在return_code为SUCCESS的时候有返回	
    }
    /// <summary>
    /// NATIVE Native支付
    /// </summary>
    public class ResponseUnifiedOrderNativeResult : ResponseUnifiedOrderBase
    {
        #region 以下字段在return_code为SUCCESS的时候有返回	

        #region 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #region 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段
        /// <summary>
        /// 预支付交易会话标识
        /// 微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时
        /// 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段
        /// </summary>
        public string prepay_id { set; get; }
        #endregion 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段

        #region 支付类型为 NATIVE Native支付 返回该字段
        /// <summary>
        /// 二维码链接
        /// trade_type=NATIVE时有返回，此url用于生成支付二维码，然后提供给用户进行扫码支付。
        /// 支付类型为 NATIVE Native支付 返回该字段
        /// </summary>
        public string code_url { set; get; }
        #endregion 支付类型为 NATIVE Native支付 返回该字段

        #endregion 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #endregion 以下字段在return_code为SUCCESS的时候有返回	
    }
    /// <summary>
    /// APP APP支付
    /// </summary>
    public class ResponseUnifiedOrderAppResult : ResponseUnifiedOrderBase
    {
        #region 以下字段在return_code为SUCCESS的时候有返回	
        #region 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #region 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段
        /// <summary>
        /// 预支付交易会话标识
        /// 微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时
        /// 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段
        /// </summary>
        public string prepay_id { set; get; }
        #endregion 支付类型为 JSAPI 公众号支付  NATIVE Native支付  APP APP支付  MWEB H5支付 返回该字段

        #endregion 以下字段在return_code 和result_code都为SUCCESS的时候有返回
        #endregion 以下字段在return_code为SUCCESS的时候有返回	
    }
    /// <summary>
    /// MICROPAY 扫码支付
    /// </summary>
    public class ResponseUnifiedOrderMicroPayResult : ResponseUnifiedOrderBase
    {
        #region 以下字段在return_code为SUCCESS的时候有返回	

        #region 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        /// <summary>
        /// 用户标识
        /// 用户在商户appid 下的唯一标识
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string openid { set; get; }
        /// <summary>
        /// 是否关注公众账号
        /// 用户是否关注公众账号，仅在公众账号类型支付有效，取值范围：Y或N;Y-关注;N-未关注
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string is_subscribe { set; get; }
        /// <summary>
        /// 用户子标识
        /// 子商户appid下用户唯一标识，如需返回则请求时需要传sub_appid
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string sub_openid { set; get; }
        /// <summary>
        /// 是否关注子公众账号
        /// 用户是否关注子公众账号，仅在公众账号类型支付有效，取值范围：Y或N;Y-关注;N-未关注
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string sub_is_subscribe { set; get; }
        /// <summary>
        /// 付款银行
        /// 银行类型，采用字符串类型的银行标识，值列表详见银行类型
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string bank_type { set; get; }
        /// <summary>
        /// 标价币种
        /// 符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string fee_type { set; get; }
        /// <summary>
        /// 标价金额
        /// 订单总金额，单位为分，只能为整数，详见支付金额
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public int total_fee { set; get; }
        /// <summary>
        /// 现金支付币种
        /// 符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string cash_fee_type { set; get; }
        /// <summary>
        /// 现金支付金额
        /// 订单现金支付金额，详见支付金额
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public int cash_fee { set; get; }
        /// <summary>
        /// 应结订单金额
        /// 当订单使用了免充值型优惠券后返回该参数，应结订单金额=订单金额-免充值优惠券金额。
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public int settlement_total_fee { set; get; }
        /// <summary>
        /// 代金券金额
        /// “代金券”金额<=订单金额，订单金额-“代金券”金额=现金支付金额，详见支付金额
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string coupon_fee { set; get; }
        /// <summary>
        /// 微信支付订单号
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string transaction_id { set; get; }
        /// <summary>
        /// 商户订单号
        /// 商户系统内部订单号，要求32个字符内（最少6个字符），只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string out_trade_no { set; get; }
        /// <summary>
        /// 商家数据包
        /// 商家数据包，原样返回
        /// 支付类型为 MICROPAY 扫码支付 返回该字段
        /// </summary>
        public string attach { set; get; }
        /// <summary>
        /// 支付完成时间
        /// 商家数据包，原样返回
        /// 订单生成时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。详见时间规则
        /// </summary>
        public string time_end { set; get; }

        #endregion 以下字段在return_code 和result_code都为SUCCESS的时候有返回

        #endregion 以下字段在return_code为SUCCESS的时候有返回	
    }
}
